function verificarHumedad() {
    //Estas dos líneas van a verificar la hora del día y así restringir alertas, por ejemplo cada noche
  const horaActual = new Date().getHours();
  if (horaActual < 8 || horaActual >= 20) return; // No ejecutar entre 20:00 y 8:00
  
  const hojaDatos = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Últimos Valores");
  const hojaUsuarios = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("datos usuarios");

  if (!hojaDatos || !hojaUsuarios) return;

  const datosValores = hojaDatos.getDataRange().getValues();
  const datosUsuarios = hojaUsuarios.getDataRange().getValues();

  // Crear un mapa de sensores con sus límites, correos y seudónimos
  const sensores = {};
  for (let i = 1; i < datosUsuarios.length; i++) {
    const nombreSensor = datosUsuarios[i][0];
    const seudonimo = datosUsuarios[i][1];
    const correo = datosUsuarios[i][2];
    const humMax = parseFloat(datosUsuarios[i][5]);
    const humMin = parseFloat(datosUsuarios[i][6]);

    if (nombreSensor && correo) {
      sensores[nombreSensor] = {
        seudonimo: seudonimo || nombreSensor,
        correo: correo,
        humMax: isNaN(humMax) ? null : humMax,
        humMin: isNaN(humMin) ? null : humMin
      };
    }
  }

  // Acumular alertas por correo
  const alertasPorCorreo = {};

  for (let i = 1; i < datosValores.length; i++) {
    const nombreSensor = datosValores[i][0];
    const humedad = parseFloat(datosValores[i][2]); // Humedad
    const fechaYHora = new Date(datosValores[i][1]);
    const sensor = sensores[nombreSensor];

    if (sensor && !isNaN(humedad)) {
      const alerta = alertasPorCorreo[sensor.correo] || { max: [], min: [] };

      if (sensor.humMax !== null && humedad > sensor.humMax) {
        alerta.max.push(`- ${sensor.seudonimo} registró ${humedad}% (límite máximo: ${sensor.humMax}%) a las ${fechaYHora.toLocaleString('es-ES')}`);
      }

      if (sensor.humMin !== null && humedad < sensor.humMin) {
        alerta.min.push(`- ${sensor.seudonimo} registró ${humedad}% (límite mínimo: ${sensor.humMin}%) a las ${fechaYHora.toLocaleString('es-ES')}`);
      }

      alertasPorCorreo[sensor.correo] = alerta;
    }
  }

  // Enviar un solo correo por usuario con ambas alertas (si hay)
   for (const correo in alertasPorCorreo) {
    const alertas = alertasPorCorreo[correo];

    // ❗ No enviar si no hay ninguna alerta
    if (alertas.max.length === 0 && alertas.min.length === 0) continue;

    let mensaje = `Hola,\n\nSe han detectado valores anómalos de humedad relativa en los siguientes sensores:\n`;

    if (alertas.max.length > 0) {
      mensaje += `\n **Humedad por ENCIMA del límite máximo:**\n${alertas.max.join('\n')}`;
    }

    if (alertas.min.length > 0) {
      mensaje += `\n\n **Humedad por DEBAJO del límite mínimo:**\n${alertas.min.join('\n')}`;
    }

    mensaje += `\n\nPor favor, verifica la situación cuanto antes.\n\nSaludos,\nSistema de Monitoreo Automático de los pilotos de CICYTEX para TECH4E.`;

    const asunto = `⚠️ Alerta: Niveles de Humedad fuera de rango en sensores`;

    GmailApp.sendEmail(correo, asunto, mensaje);
  }
}